<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script>
    /**
     * 实现方式：在子类构造函数中使用call或者apply劫持父类构造函数方法，并传入参数
     * 原理：使用call或者apply更改子类函数的作用域，使this执行父类构造函数，子类因此可以继承父类共有属性
     * 优点：可以解决原型链继承的缺点
     * 缺点：不可继承父类的原型链方法，构造函数不可复用
     */

    function Parent(name) {
      this.names = name
      this.like = ['水果']
    }

    Parent.prototype.getName = function() {
      console.log('原型获取', this.names);
    }

    function Child(name){
      Parent.call(this, name)
    }

    var child1 = new Child(['kevin', 'daisy'])
    child1.names.push('zyh')
    child1.like.push('运动')
    console.log(child1.names)
    console.log(child1.like);
    // child1.getName() // child1.getName is not a function

    var child2 = new Child('child2Name')
    console.log(child2.names);
    console.log(child2.like);

   </script>
</body>
</html>